package define

import (
	"fmt"
	//"github.com/chai2010/winsvc"
	"MqttCloudProtocolServer/publiclib/helplib"

	"github.com/wonderivan/logger"
	//"path/filepath"
	//"strings"
)

/*`{
    "TimeFormat":"2006-01-02 15:04:05", // 输出日志开头时间格式
    "Console": {            // 控制台日志配置
        "level": "TRAC",    // 控制台日志输出等级
        "color": true       // 控制台日志颜色开关
    },
    "File": {                   // 文件日志配置
        "filename": "app.log",  // 初始日志文件名
        "level": "TRAC",        // 日志文件日志输出等级
        "daily": true,          // 跨天后是否创建新日志文件，当append=true时有效
        "maxlines": 1000000,    // 日志文件最大行数，当append=true时有效
        "maxsize": 1,           // 日志文件最大大小，当append=true时有效
        "maxdays": -1,          // 日志文件有效期
        "append": true,         // 是否支持日志追加
        "permit": "0660"        // 新创建的日志文件权限属性
    },
    "Conn": {                       // 网络日志配置
        "net":"tcp",                // 日志传输模式
        "addr":"10.1.55.10:1024",   // 日志接收服务器
        "level": "Warn",            // 网络日志输出等级
        "reconnect":true,           // 网络断开后是否重连
        "reconnectOnMsg":false,     // 发送完每条消息后是否断开网络
    }
}`*/

/*获取Log等级描述*/
func getLogLevelStr(logLevel int) string {
	switch logLevel {
	case 0:
		return "EMER"
	case 1:
		return "ALRT"
	case 2:
		return "EROR"
	case 3:
		return "WARN"
	case 4:
		return "INFO"
	case 5:
		return "DEBG"
	case 6:
		return "TRAC"
	default:
		return "EMER"
	}
}

// CheckIsLog 创建Log文件的输出方式
func CheckIsLog(logFile string) {
	logcfg := helplib.ReplaceFileExt(ConfigPath+logFile, ".cfg")
	if res, _ := helplib.FileExists(logcfg); res {
		logger.SetLogger(logcfg)
		return
	}
	var logLevelConsole = getLogLevelStr(RunLogConsoleLevel)
	var logLevelFile = getLogLevelStr(RunLogFileLevel)
	str1 := `{
            "TimeFormat":"2006-01-02 15:04:05",
            "Console": {
                "level": "` + logLevelConsole + `",
                "color": true
            },
            "File": {
                "filename": "`
	str2 := `",
                "level": "` + logLevelFile + `",
                "daily": true,
                "maxlines": 1000,
                "maxsize": 1,
                "maxdays": -1,
                "append": true,
                "permit": "0660"
            }}`
	//path, _ := winsvc.GetAppPath()
	//path = filepath.Dir(path) + "/" + define.LogPath
	filePath := LogPath + logFile
	//str3 := strings.Replace(filePath, "\\", "\\\\", -1)
	if res, err := helplib.FileExists(filePath); res {
		if err != nil {
			fmt.Println(err.Error())
		} else {
			if res, err = helplib.FileCopy(filePath, LogPath+"lastLog.log"); !res {
				if err != nil {
					fmt.Println(err.Error())
				}
				fmt.Println("复制最后一次的LOG出错")
			} else {
				helplib.FileDelete(filePath)
			}
		}
	}
	if res, err := helplib.PathExists(LogPath); !res {
		if res, err = helplib.PathCreat(LogPath); res {
			fmt.Println("Log path creat success")
		} else {
			fmt.Println("Log path creat error")
			if err != nil {
				fmt.Println(err.Error())
			}
		}
	} else {
		if err != nil {
			fmt.Println(err)
		} else {
			fmt.Println("Log path Exist")
		}
	}
	logger.SetLogger(str1 + filePath + str2)
	logger.Alert(str1 + filePath + str2)
}
